package com.ruyuan2020.im.x;


import java.util.Arrays;

/**
 * 移除数组元素
 */
public class _27 {
    public static int[] removeElement1(int[] arr, int target) {
        int n = arr.length;
        int[] result = new int[n];
        int j = 0;

        for (int i = 0; i < n; i++) {
            if (arr[i] != target) {
                result[j] = arr[i];
                j++;
            }
        }
        // 仅返回有效部分的数组
        return Arrays.copyOf(result, j);
    }



        public static int[] removeElement2(int[] arr, int target) {
            int j = 0;
            for (int i = 0; i < arr.length; i++) {
                if (arr[i] != target) {
                    arr[j] = arr[i];
                    j++;
                }
            }
            return Arrays.copyOf(arr, j);
        }


        public static int removeElement(int[] nums, int val) {
            int j = 0; // 慢指针，指向当前有效的数组末尾
            for (int i = 0; i < nums.length; i++) {
                if (nums[i] != val) {
                    nums[j] = nums[i]; // 将非目标值复制到慢指针位置
                    j++; // 慢指针向前移动
                }
                // 如果 nums[i] == val，则快指针继续向前移动，跳过当前元素
            }
            return j; // 返回新数组的长度
        }



        public static void main(String[] args) {
            int[] nums = {3, 2, 2, 3};
            int val = 3;
            int newLength = removeElement(nums, val);

            System.out.println("New length: " + newLength); // 应该输出2
            System.out.print("Result array: ");
            for (int i = 0; i < newLength; i++) {
                System.out.print(nums[i] + " ");
            }
            // 应该输出: 2 2
        }




}
